package com.wang.tool.monitor.sample;

import com.wang.tool.util.SimpleLogUtil;

/**
 * 全局采样器
 * 为什么单独设计一个类管理异常翻译器?
 * 想想为啥spring在web设计了一个全局异常处理机制?
 * 无论何时何地都可以方便使用到某个工具
 *
 * @Author wangshaopeng
 * @Date 2022/6/28
 */
public class GlobalLinkSampler {


    /**
     * 全局配置
     */
    private static LinkSampler sampler = new SimpleLinkSampler();

    /**
     * 是否命中采样
     * 不会报错
     *
     * @return 非空
     */
    public static boolean isSampling(String group, String biz, String action, long beginTime) {
        if (sampler == null) {
            return false;
        }
        try {
            return sampler.isHitSampling(group, biz, action, beginTime);
        } catch (Throwable e) {
            SimpleLogUtil.error("globalIsSamplingError", e);
            return false;
        }
    }

    /**
     * 设置全局采样器
     *
     * @param sampler 非空
     */
    public static void setTranslator(LinkSampler sampler) {
        GlobalLinkSampler.sampler = sampler;
        SimpleLogUtil.info("[changeGlobalLinkSampler] sampler:{0}", sampler);
    }


}
